import java.util.Scanner;

public class demo04 {
//    【问题描述】：输入两个整数a和b，输出这两个整数的和。a和b都不超过100位。
//    【算法描述】
//    由于a和b都比较大，所以不能直接使用语言中的标准数据类型来存储。对于这种问题，一般使用数组来处理。
//    定义一个数组A，A[0]用于存储a的个位，A[1]用于存储a的十位，依此类推。同样可以用一个数组B来存储b。
//    计算c = a + b的时候，首先将A[0]与B[0]相加，如果有进位产生，则把进位（即和的十位数）存入r，把和的个位数存入C[0]，即C[0]等于(A[0]+B[0])%10。
//    然后计算A[1]与B[1]相加，这时还应将低位进上来的值r也加起来，即C[1]应该是A[1]、B[1]和r三个数的和．如果又有进位产生，
//    则仍可将新的进位存入到r中，和的个位存到C[1]中。依此类推，即可求出C的所有位。最后将C输出即可。
//    【输入格式】：
//    输入包括两行，第一行为一个非负整数a，第二行为一个非负整数b。两个整数都不超过100位，两数的最高位都不是0。
//    【输出格式】：
//    输出一行，表示a + b的值。
//    【样例输入】：20100122201001221234567890
//               2010012220100122
//    【样例输出】：20100122203011233454668012

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str1=sc.nextLine();
        int[] arr1=new int[str1.length()];
        for (int i = 0; i < str1.length(); i++) {
            arr1[i]=str1.charAt(i)-48;
        }
        String str2=sc.nextLine();
        int[] arr2=new int[str2.length()];
        for (int i = 0; i < str2.length(); i++) {
            arr2[i]=str2.charAt(i)-48;
        }
        int len1=str1.length();
        int len2=str2.length();
        int len=0;
        if(len1>len2){
            len=len1;
        }else{
            len=len2;
        }
        int[] arr=new int[len];
        int i=len1-1;
        int j=len2-1;
        int k=0;
        int m=0;
        while(i>=0&&j>=0){
            int tmp=arr1[i]+arr2[j]+m;
            if(tmp>=10){
                tmp%=10;
                m=1;
            }else {
                m=0;
            }
            arr[k++]=tmp;
            i--;
            j--;
        }
        if(len1>len2){
            for (int l = len1-len2-1; l >= 0; l--) {
                arr[k++]=arr1[l];
            }
        }else {
            for (int l = len2-len1-1; l >= 0; l--) {
                arr[k++]=arr2[l];
            }
        }
        for (int l = len-1; l >= 0; l--) {
            System.out.print(arr[l]);
        }
    }
}









